Conventionally, a first group of related data values that need to be masked is replaced with a second group of valid data values that are selected from values external to the universe of data that includes the first group. The selection of such external values to mask the first group results in an application inaccurately processing the masked data values. Such inaccurate processing is caused by the application exercising logical paths that are different from the logical paths employed when the unmasked data values are processed. Furthermore, conventional masking methods applied to a first data value (e.g., a street address) in a set of related data values (e.g., street address, city, state) in an unmasked group of data values, where the set of related data values is mapped to a second data value (e.g., a geographic code) in the unmasked group, provide a masked group that includes a syntactically equivalent, but logically invalid substitute for the first data value. The logically invalid substitute is no longer related by the mapping to the second data value, thereby causing application logic applied to the masked group to fail, even though the logic had been successfully tested with the unmasked group. Known techniques to address the aforementioned inaccurate processing and logic failure include: (1) developing a separate version of the application code that tests unique scenarios related to the usage of the masked data values; and (2) creating a new set of fictitious test data that provides full test case coverage. Technique (1) requires additional development time and testing that is expensive in terms of labor and computing resources. Technique (2) requires a costly creation of realistic data from scratch. Thus, there exists a need to overcome at least one of the preceding deficiencies and limitations of the related art.